package com.divemotor.ventarepuestosinternet.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(schema = "TALLER", name = "TAL_MAE_VEHICULO_EXTRA")
public class VehiculoExtra implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -4231089200728381212L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TAL_MAE_VEHICULO_EXTRA")
	@SequenceGenerator( schema="TALLER", name = "SEQ_TAL_MAE_VEHICULO_EXTRA",  sequenceName = "TALLER.SEQ_TAL_MAE_VEHICULO_EXTRA", allocationSize = 0)
	@Column(name="num_id_vehiculo_extra")
	private Integer idVehiculoExtra;
	
	@ManyToOne
	@JoinColumns({@JoinColumn(name = "cod_modelo_veh", referencedColumnName="cod_modelo_veh", insertable = true, updatable = true),
				@JoinColumn(name = "cod_marca", referencedColumnName="cod_marca", insertable = true, updatable = true),
				@JoinColumn(name = "cod_tipo_vehiculo", referencedColumnName="cod_tipo_vehiculo", insertable = true, updatable = true)})
	private Modelo modelo;
	
	@ManyToOne
	@JoinColumn(name = "cod_usuario_cliente", referencedColumnName="cod_id_usuario_cliente", insertable = true, updatable = true)
	private UsuarioCliente usuarioCliente;
	
	@Column(name="num_placa", length =  12)
	private String placa;
	
	@Column(name="num_chasis", length = 20)
	private String chasis;
	
	@Column(name="fec_matricula")
	private Date fechaMatricula;
	
	@Column(name = "IND_ACTIVO", length = 1)
	private String estado;
	
	@ManyToOne()
	@JoinColumn(name="COD_ID_USUARIO_CREACION",referencedColumnName="COD_ID_USUARIO" )
	private Usuario usuarioCreacion;
	@ManyToOne
	@JoinColumn(name="COD_ID_USUARIO_MODIFICACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioModificacion;
	@ManyToOne
	@JoinColumn(name="COD_ID_USUARIO_ELIMINACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioEliminacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_creacion")
	private Date fechaCreacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_modificacion")
	private Date fechaModificacion;

	@Temporal(TemporalType.DATE)
	@Column(name = "fec_eliminacion")
	private Date fechaEliminacion;
	
	/*** Constructor ***/
	
	public VehiculoExtra() {
		this.modelo = new Modelo();
	}
	
	public VehiculoExtra(Integer idVehiculoExtra) {
		this.idVehiculoExtra = idVehiculoExtra;
	}

	/*** getters & setters ***/
	
	public Usuario getUsuarioCreacion() {
		return usuarioCreacion;
	}

	public void setUsuarioCreacion(Usuario usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}

	public Usuario getUsuarioModificacion() {
		return usuarioModificacion;
	}

	public void setUsuarioModificacion(Usuario usuarioModificacion) {
		this.usuarioModificacion = usuarioModificacion;
	}

	public Usuario getUsuarioEliminacion() {
		return usuarioEliminacion;
	}

	public void setUsuarioEliminacion(Usuario usuarioEliminacion) {
		this.usuarioEliminacion = usuarioEliminacion;
	}

	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public Date getFechaModificacion() {
		return fechaModificacion;
	}

	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}

	public Date getFechaEliminacion() {
		return fechaEliminacion;
	}

	public void setFechaEliminacion(Date fechaEliminacion) {
		this.fechaEliminacion = fechaEliminacion;
	}
	
	public Integer getIdVehiculoExtra() {
		return idVehiculoExtra;
	}

	public void setIdVehiculoExtra(Integer idVehiculoExtra) {
		this.idVehiculoExtra = idVehiculoExtra;
	}

	public Modelo getModelo() {
		return modelo;
	}

	public void setModelo(Modelo modelo) {
		this.modelo = modelo;
	}

	public UsuarioCliente getUsuarioCliente() {
		return usuarioCliente;
	}

	public void setUsuarioCliente(UsuarioCliente usuarioCliente) {
		this.usuarioCliente = usuarioCliente;
	}

	public String getPlaca() {
		return placa;
	}

	public void setPlaca(String placa) {
		this.placa = placa;
	}

	public String getChasis() {
		return chasis;
	}

	public void setChasis(String chasis) {
		this.chasis = chasis;
	}

	public Date getFechaMatricula() {
		return fechaMatricula;
	}

	public void setFechaMatricula(Date fechaMatricula) {
		this.fechaMatricula = fechaMatricula;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}
}
